热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

花销|师职_待业五年后的找工作经历

篇首语:本文由编程笔记#小编为大家整理,主要介绍了待业五年后的找工作经历相关的知识,希望对你有一定的参考价值。本文转载李辉老师

篇首语:本文由编程笔记#小编为大家整理,主要介绍了待业五年后的找工作经历相关的知识,希望对你有一定的参考价值。




本文转载李辉老师个人博客,已获得作者授权!
原文链接:https://greyli.com/job-hunting/


2017 年我从扬州大学对面的大专毕业,在家待业五年后,终于没有钱再支撑下去。于是去年十一月开始正式找工作,十二月底拿到第一个 offer。今年年初来到上海,开始了第一份全职工作。

我一直把去某个公司上班看作是一个备选项。这几年经常幻想能写出一本畅销书,或是做出某个创业项目,然后就可以发财一直自由下去。但是基于钱出发的事情都不太有趣,基于兴趣出发做的事情又做得太多,所以钱越来越少,关于收入的焦虑感越来越强,最终只好投降。


个人背景

对于 IT 相关职位来说,我的优劣势大致如下:

劣势

专科学历
土木相关专业
待业五年
零工作经验
技术栈单一(Python/Flask)

优势

技术栈专一(Python/Flask)
参与[开源项目](https://github.com/greyli)的经验(从 2019 年开始做 Flask 的维护者)
一本书(《[Flask Web 开发实战](https://helloflask.com/book/1/)》)
一些技术演讲
创建和维护技术社区的经验([HelloFlask](https://helloflask.com/))
组织技术会议的经验(PyCon China 2019,FlaskCon 2020)
连续三年的微软 MVP 奖项(Python 方向)


从 2016 年实习即回家开始算起的话,我的简历上大概有五年零三个月那么大的空白。不过虽然没工作,这五年也尝试了各种有意思的事情,同时为了获得收入打了一些零工——做了七八个外包项目。

这些外包项目不算优势也不算劣势,但是可以用来填充简历——简历上放了两个开源项目(Flask 和 APIFlask)和两个外包项目。而有些劣势也不完全算劣势,比如非科班自学编程,有些 HR/经理会认为不专业,有些则认为这佐证了学习能力和执行力。
求职方向

我对目标职位的三个需求是:

不加班
面试不考算法题
现场(on-site)工作

「不加班」是基本要求,我需要一份正常工时的工作,一来是为身心健康着想,二来是因为我需要有业余时间来写书和做开源项目。

「面试不考算法题」是因为不想浪费时间去刷无聊的算法题。算法题对我来说没有任何乐趣,相比之下,我更喜欢开发 Web 程序和设计 API。

想要一个「现场(on-site)工作」是因为很想去体验办公室生活,顺便体验在不同的城市生活。在家呆了五年后,我也有些厌倦在家工作。太容易过度娱乐和过度工作,模糊生活工作的边界。我想要有一个办公空间来把工作和生活在时间和空间上分隔起来。

国内公司普遍加班,互联网公司普遍考算法题,因此能够满足这三点的只有「非互联网 + 外企」职位。结合我擅长且感兴趣的技术栈(Python Web)和想要去的城市(上海),最终的求职方向是「上海 | 外企 | Python 后端工程师」。


职位搜寻

我在下面这两个地方搜集了 14 个和 Python Web(尤其是 Flask)相关且位于上海的外企职位:

LinkedIn 搜索关键词「Flask」
一个偶然发现的[职位采集站点](https://cn.thakey.com/)

Python 和 Flask 相关的工作还是挺多的,我只收集了上海 on-site 的外企职位,如果扩大范围还可以找到更多。后来我把一些没有来得及投递或已经收到拒信的 Flask 相关职位放到了 GitHub 上。

这两个网站的职位都提供公司网站的招聘链接。我倾向于在公司网站投递简历。虽然没有证据,但我认为这会比在招聘网站上投递更容易被看到。如果招聘网站上直接展示你的资料,比如学历和工作经验,这会降低 HR 打开简历的概率。不过招聘网站可以用来参考薪资范围。


职位投递和面试

我的职位投递策略是只投递自己想去的职位,按照优先级投递,能够拿到一个 offer 就可以。为了把最多的时间投入在优先级更高的职位,我按照意向程度和技术栈匹配程度把这 14 个职位分成了三批。

第一批两个职位在 11 月 20 号左右投递:

育碧:二面挂
博世:口头 offer

第二批四个职位在 12 月 7 号投递:

戴尔 EMC:offer
Autodesk:二面挂
万事达:电面通过,后续没有继续面
特斯拉:简历无回复

我统计了每一个职位的时间花销,包括准备面试和面试本身花费的时间。因为不用花时间刷算法题,所以这里的准备主要是:

看出现在职位描述上或是简历技能列表里的相关技术知识,也就是俗称的八股文
练习英语口语,主要是在口语网站上和一些外国人模拟面试对话
了解对应职位和公司,收集相关面经
准备常见非技术问题的回答
准备项目经历介绍
针对每个职位更新简历

育碧

时间花销:22h 21m

11/19 上午官网投递简历
11/19 下午收到约电面时间的邮件
11/25 电面二十分钟,主要聊经历、技术栈和面试安排
11/25 下午收到跳过笔试的邮件
11/26 收到技术面安排邮件
11/30 技术面,一个半小时
12/6 拒信

育碧是一家游戏公司,这可能不应该作为申请职位的主要考量因素,但这的确是最吸引我的一点。哪个喜欢玩游戏的程序员不想去一个游戏公司上班呢?而且入职后还可以免费玩所有的育碧游戏。我把它放到了职位申请列表的最上面。

电面时 HR 告诉我职位对应团队的同事看了我的 GitHub 资料,觉得很惊艳。后续还帮我跳过了笔试环节。不过技术面发挥得一般,有一些算法和 Python 元编程相关的问题没有回答上来。两位面试官在会议室里,声音不是很清晰。

这是我自大学毕业以来的第一次技术面试。在之前的几年里,我有过五六次找工作的经历,大多是朋友推荐,最后因为各种原因不了了之。唯一进入面试的是一个德国的远程工作,因为我的英语水平一般,加上对方有一些口音,所以还没来得及探讨技术话题就匆匆结束了。


博世

时间花销:24h 13m

11/22 中午官网投递简历
11/22 下午接到经理电话,算是电面,聊了经历、技术栈、目标职位的职责,最后约了技术面时间
11/24 技术面
11/25 技术面反馈,布置小作业
12/1 基于小作业的跟进面试
12/2 谈薪资
12/3 口头 offer,协商薪资
中间来回几轮薪资谈判
12/25 HR 回复职位因为疫情推迟招聘到明年二月

博世的职位描述和我的技术栈非常匹配,而且要求看起来很简单。简历处理效率很高,上午投递申请,下午就接到电话。

整个面试过程很顺利。技术面和育碧类似,主要是问 Python/数据库/HTTP/Linux 相关的一些东西。技术面后布置了一个小作业,是实现一个包含特定功能的 Teams bot,给了一周时间。提交作业后的第二天 HR 来谈薪资,再隔一天给了口头 offer。不过 offer 薪资和意向差得很远,我就请 HR 再帮忙协商协商,后来 HR 不知道为什么理解成我拒了 offer。经过几次艰难的谈判后我开始妥协,然而一个月后 HR 回复因为疫情暂停招聘了……


Autodesk

时间花销:13h 25m

12/7 官网投递简历
12/9 下午接到 HR 电话,聊了经历、期望薪资、简单英语对话考察,电话刚挂没多久就收到拒信
12/10 接到另一位 HR 电话,直接约了一面时间
12/13 一面
12/14 HR 约二面
12/15 二面
12/23 拒信

这个职位一开始发生了一些乌龙,后来才明白是因为简历被投递的部门拒了,然后又被另一个部门的经理打捞回来。一面就是经理面,主要聊了我的经历、公司业务和技术栈等等。这位经理很赏识我,整场面试一半时间都在挥动橄榄枝,这给我屡屡失败的面试重新建立了很大的信心。

可惜最终止步于二面,因为有一位面试官对我的稳定性表示担心。二面是技术面,除了一个关于排序算法的问题卡顿了好久才勉强回答,大体表现还不错。


戴尔 EMC

时间花销:10h 2m

12/7 官网投递简历
12/16 接到 HR 电话,介绍面试安排
12/17 连续两场技术面,各一小时
12/22 早上 HR 电话安排终面
12/22 中午终面
12/22 下午 HR 电话谈薪资
12/29 确认薪资和 offer

接到 HR 电话就直接介绍了面试安排,没有聊其他东西。技术面第一场问了很多涉及各个方面的技术问题,还有一段英文对话考察;第二场出了一道简单的算法题,二分查找,不过基于矩阵的变式没做出来。职位描述里除了 Python 和 Flask 还列出了很多我不太熟悉的东西,后来发现这些都没有问。终面是经理面,主要聊一些技术方向、职业规划之类的话题。终面结束后下午就接到 HR 电话谈薪资,29 号确认了 offer。

收到 offer 后非常开心,毕竟是人生第一个 offer,第一时间就开了薯片庆祝:

最终拿到 offer 的职位反而是这几个面试里花费时间最少的一个(大部分技术问题相关的准备都已经在前面的面试做得差不多了),也是唯一考了算法题的一个。
万事达

12/7 官网投递简历
12/28 HR 电面,聊经历、期望薪资、简单英语对话考察
1/4 因为已经确认了戴尔 offer,所以取消了后续面试

因为安排太晚,所以没有继续面。后续 HR 说经理对我的简历很感兴趣,问我要不要再聊聊,但我实在不想再折腾面试了。

除了上面这六个主动申请的职位,这段时间还有三个被推荐和邀请的职位,完整参与面试的是下面两个。


Dropbase

时间花销:6h 6m

11/20 收到面试邀请邮件
11/27 一面
12/1 拒信

一个湾区创业公司,技术栈主要是 Python 和 Flask,远程工作。通过 APIFlask 项目找到我。这个职位看起来很不错,不过我当时更偏向找一个 on-site 工作,所以没有花太多时间准备。面试是和两个公司创始人聊天,没有考算法题,一周后收到了拒信。这个职位现在仍在开放,感兴趣的朋友可以试试看。
AWS

时间花销:29h 40m

11/16 内推提交简历
11/17 HR 电面,聊经历、期望薪资
11/23 一面
11/25 拒信

在 AWS 工作的朋友推荐,职位是解决方案架构师,这是我第一次了解到这个职位。30 个小时时间花销大部分是用来准备 Amazon Leadership 和 BQ 问题。一面挂,38 分钟。


备选职位方向:开发者布道师

在十一月底搜集和投递 Python 后端方向的职位之前,我先在开发者布道师(Developer Advocate)方向做了一些零星尝试。这个方向可以申请的职位并不多,而且大多和 Python 没有关系。最终只面了两个职位,均止步于一面。

这个职位的日常工作基本都是我擅长和喜欢做的事情:写作、演讲、分享、教学。如果目标职位的产品和我的技术背景接近的话,我就可以继续在喜欢的主题(Python)产出内容。

一开始是朋友推荐的职位:

Nebula Graph:一面挂

面试后我继续申请了几个职位。下面这几个职位除了最后一个都是通过 Google 搜索关键词「Developer Advocate China」找到:

TigerGraph:简历无回复
JetBrains:一面挂
AWS:简历无回复
Jina AI:一面后转到后端工程师方向,所以没有继续面

微软

时间花销:22h 30m

第一次了解到开发者布道师这个职位是在四月份,当时微软第一次在国内招聘开发者布道师,朋友推荐我去试试。

我一开始认为自己是非常合适的人选,后来发现这个职位更希望候选人有 Azure、AI 相关的背景(职位名称是 Cloud Advocate 而不是 Developer Advocate)。折腾了很久,最后并没有拿到面试机会。后来微软有一个面向 GitHub & VS Code & Open Source 的开发者布道师职位,看起来更适合我,不过没有在国内开放。

因为我在捕蛇者说的一期播客聊到了这件事,所以有朋友推荐了 Nebula Graph 的职位。


Nebula Graph

时间花销:35h 29m

10/12 一面

这是一个面向开源数据库项目 Nebula Graph 的「社区布道师」职位,对我来说是完全陌生的领域,所以有很多准备工作可以做。初次接触后我就迅速下单了两本图数据库相关的书(不过一本看了开头,一本还没拆封)。花了一些时间快速熟悉 Nebula Graph,在这个过程里发现了很多网站、文档、项目上的问题,所以就把这些问题整理了下来(见这篇《Nebula 网站和项目捉虫》)。然后陆续给他们的几个项目提交了一些 PR(代码贡献)。

一面后,我继续提交了一些 PR,作为「如果入职的话会帮忙做哪些改进」的提前展示。不过后面就再也没有收到关于下一轮面试的回复。直到一个月后的某天,HR 提起我上个月的 PR,按照社区规则要给我寄纪念品。微信对话的最后,我问 HR 对上个月的面试有没有什么反馈和建议,但是对方似乎没有看到这条消息。为了打捞学习图数据库沉没的成本,之后我继续投递了 TigerGraph 的布道师职位,结果一沉再沉。

不过没关系,我很快发现了更喜欢的开发者布道师职位——PyCharm Developer Advocate。
JetBrains

时间花销:23h 49m

10/14 官网投递简历
12/3 收到 HR 邮件
12/6 一面
12/22 收到拒信

JetBrains 的 PyCharm Developer Advocate 是这一批开发者布道师方向里最喜欢的职位,因为这和我目前擅长的技术领域一致,我可以继续做和 Flask/Python 相关的事情,不用盖新房子。

十月用 Google 搜索到这个职位,顺手就投递了。中间几次找在 JetBrains 工作的朋友打听,但是一直都没消息。十二月初终于收到 HR 的邮件,约了三天后面试。

收到邮件后,我开始幻想入职这份工作要做些什么,兴奋到很晚才睡着。其实早在申请职位的时候我就已经做了一番规划并注册了 hellopycharm.com。收到回复的第二天,我写了一封表白信放在 hellopycharm.com 上(然后在回复邮件时不经意地提起这个网址):

当时 JetBrains 刚刚在上海成立了分公司,取名捷并思,但我更喜欢「喷气脑」这个名字,所以之后还注册了 penqinao.com,放了一个 logo 在上面:

面试的前几天刚结束另一场英语面试,所以语言问题不大。而且我还在某个英语口语网站上找到同样来自捷克的另一位 Monika 来模拟面试(JetBrains 的 HR 也叫 Monika)。

月底收到拒信说她们希望找到一位有数据科学背景的候选人,不过我在面试时就问过这个问题,她们回答说没关系……

不过还是没关系,对我安慰作用最好的一种说法是,开发者布道师的工作对现在的我来说不是最佳选择。

我在过去几年做演讲和写文章都是跟随自己的兴趣和关注点,如果变成为某个公司的产品/项目——尤其是一个新的领域——做大量的输出,一定没法再像之前那样轻松愉快。另一方面,这类职位的公司也许更想找一位有很多年工作经验、技术栈丰富的人,而我正在找第一份工作,我还只会 Python。

PyCharm 这个职位收到拒信后,我就决定放弃这个职位方向。先做一个后端开发职位会是更好的选择,这样我就可以继续按照自己的喜好演讲和写作,没有任何拘束,而且也有时间踏实学东西,多做积累。


总结

在网络上经常看到有人每天都刷算法题(LeetCode),在无形中制造了一种不刷题找不到工作的紧张气氛。这次找工作才发现不一定需要刷题。有一些公司是不考算法题的,比如大部分非互联网行业的外企和某些创业公司。还有一个 GitHub 仓库记录了所有不需要白板测试(算法题)的公司名单,对应的网站可以用来检索所有不考算法题的开放职位。如果实际工作只是 CRUD,那么实现一个小项目,或是抽象一个公司产品的小功能出来远比考算法题有意义得多。

即使不用刷题,找工作也是一件很累的事情。要承受别人的否定,会认识到自己的局限和不足,然后还有无穷无尽的等待,等待充满随机性的结果。

更糟糕的是,我对每一个投递了申请的公司和职位都建立了太多的期待。除了面经,我还会收集每一个公司的各种信息:公司位置、公司评价、工作环境、周边环境,甚至附近有哪些合适的房子可以租。对于拿到面试机会的两个布道师职位,我都规划了入职后会做什么,具体到可以做的演讲主题、示例程序和教程,并且还提前注册了一些网站。当这些职位收到拒信后,这些期待和规划就全部落空。

经常会觉得自己是某个职位的最佳人选,然后就煞有其事地在晚饭时告诉家人接下来我即将会去哪个城市哪个公司上班……

12 月 22 号到 12 月 28 号是最黑暗的一周。22 号收到 JetBrains 拒信,最喜欢的布道师职位;23 号收到 Autodesk 拒信,最受赏识的职位;25 号博世回复暂停招聘,离 offer 最近的职位。如果没有拿到戴尔的 offer,那就要继续投递第三批职位,经历更多的面试和拒信,想想就后怕。

最后要感谢很多在这段时间提供帮助的朋友们。感谢辛庆老师、思为、清蒸、Aleck、伊洪、Tzu-ping Chung、Joshua Bronson、大妈、琚致远还有其他在 Twitter 和微信上给我推荐工作机会的朋友们;感谢开发者布道师前辈们——Anthony Shaw、思为、朱兴亮和范圣佑提供了很多面试建议;感谢职场前辈张晋涛老师在入职前给我科普了很多职场经验。

同时感谢每一个给我面试机会的 HR 和经理(尤其是戴尔 EMC 的 Fiona 和 Kui),不管我是千里马还是百里马,你们都是我的伯乐。


推荐阅读
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Python应用实例大揭秘:七大令人惊叹的高阶技巧展示
    2020年,Python无疑成为了最炙手可热的编程语言,其影响力已远远超出程序员的范畴。从初学者到资深从业者,甚至小学生,都在纷纷加入Python的学习热潮中。凭借其低门槛、易上手和强大的功能,Python正逐渐成为各行业不可或缺的工具。本文将揭示七个令人惊叹的Python高级应用技巧,帮助读者进一步提升编程水平。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • Vim 编辑器功能强大,但其默认的配色方案往往不尽如人意,尤其是注释颜色为蓝色时,对眼睛极为不友好。为了提升编程体验,自定义配色方案显得尤为重要。通过合理调整颜色,不仅可以减轻视觉疲劳,还能显著提高编码效率和兴趣。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
author-avatar
手机用户2502854133
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有